package monster;

import java.util.ArrayList;

import powers.Power;
import virtualTabletop.Keyword;
import virtualTabletop.Position;
import virtualTabletop.TargetType;
import Items.Weapon;
import abilities.Abilities;
import character.Alignment;
import character.Character;
import character.Resistance;
import character.Size;
import character.Team;

/**
 *for making monsters
 * 
 * @author bjo013
 * 
 */
public class Monster extends Character
{

	int pageNb;
	Role role;
	Origin origin;
	Type type;
	Keyword keyword;
	int xpValue;
	ArrayList<MonsterAbility> monsterAbilities;

	/**
	 * Constructor for monsters
	 * 
	 * @param hp
	 *            how many hit points a monster got
	 * @param abilities
	 *            the abilities of a monster
	 * @param AC
	 *            the AC of a monster
	 * @param Fort
	 *            the fortitude of a monster
	 * @param Ref
	 *            the reflex of a monster
	 * @param Will
	 *            the will of a monster
	 * @param powers
	 *            the powers of a monster
	 * @param speed
	 *            the speed in squares of a monster
	 * @param actionPoints
	 *            actionpoints a monster may have.
	 * @param savingThrowBonus
	 *            the saving throw bonus of a monster
	 * @param size
	 *            the size of a monster
	 * @param resistances
	 *            the resistances a monster may have
	 * @param alignment
	 *            the alignment of a monster
	 * @param initiative
	 *            the initiative bonus a monster may have.
	 * @param targetType
	 *            the target type of the monster
	 * @param name
	 *            the name of the mosnter
	 * @param pageNb
	 *            on which page in the book the monster is. -1 if none.
	 * @param role
	 *            the role of a mosnter
	 * @param origin
	 *            the origin of a mosnter
	 * @param type
	 *            the type of a monster
	 * @param keyword
	 *            the keyword a monster has
	 * @param xpValue
	 *            how much xp a monster gives
	 * @param monsterAbilities
	 *            the abilities of the mosnter
	 * @param mainweapon
	 *            the weapon of a monster
	 * @param pos
	 *            the position of the monster
	 * @param sprite
	 *            the sprite of a monster
	 */
	public Monster(int hp, Abilities abilities, int[] AC, int[] Fort,
			int[] Ref, int[] Will, ArrayList<Power> powers, int speed,
			int actionPoints, int savingThrowBonus, Size size,
			ArrayList<Resistance> resistances, Alignment alignment,
			int initiative, TargetType targetType, String name, int pageNb,
			Role role, Origin origin, Type type, Keyword keyword, int xpValue,
			ArrayList<MonsterAbility> monsterAbilities, Weapon mainweapon,
			Position pos, String sprite)
	{
		super(hp, 0, abilities, AC, Fort, Ref, Will, powers, speed,
				actionPoints, savingThrowBonus, size, resistances, alignment,
				initiative, targetType, mainweapon, pos, name, Team.monsters,
				sprite);

		this.pageNb = pageNb;
		this.role = role;
		this.origin = origin;
		this.type = type;
		this.keyword = keyword;
		this.xpValue = xpValue;
		this.monsterAbilities = monsterAbilities;
	}

	@Override
	public String getName()
	{
		return name;
	}
}